fix: held tokens price data#9008
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit ffab58f. Configure here.
| // held tokens (e.g. USDC) produce a fiat value. `normalizeAssetId` checksums | ||
| // EVM ERC-20 references so a lower-cased input matches the stored key. | ||
| const assetPrice = | ||
| assetsPrice?.[normalizeAssetId(assetId)] ?? assetsPrice?.[assetId]; |
There was a problem hiding this comment.
Malformed ERC20 lookup throws
Medium Severity
selectExchangeRateByAssetId now always calls normalizeAssetId before legacy rate paths. For invalid short EVM ERC-20 references, normalizeAssetId checksums via toChecksumAddress, which throws on non–40-character hex. That breaks the prior contract of returning {} without throwing for malformed asset IDs.
Reviewed by Cursor Bugbot for commit ffab58f. Configure here.
|
issue is not present anymore |


Explanation
References
Checklist
Note
Low Risk
Scoped selector change for display and quote metadata pricing; bridge controller rates still take precedence and legacy paths are unchanged when
assetsPriceis absent.Overview
Fixes missing fiat values for held tokens (e.g. USDC) when clients use unified
AssetsControllerpricing viauseAssetsControllerForRates.selectExchangeRateByAssetIdnow looks up fungibleassetsPriceentries (after bridgeassetExchangeRates, before legacymarketData/ currency slices), mappingprice/usdPricetoexchangeRate/usdExchangeRate.normalizeAssetIdaligns lowercased CAIP-19 IDs with checksummed keys; NFT and invalid price rows are skipped. Exchange-rate source types include optionalassetsPrice. Tests and changelog document the behavior.Reviewed by Cursor Bugbot for commit ffab58f. Bugbot is set up for automated code reviews on this repo. Configure here.